home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / ask.arc / ASK.ASM next >
Encoding:
Assembly Source File  |  1984-04-04  |  2.0 KB  |  132 lines

  1.     TITLE ASK
  2. COMMENT @
  3.  
  4.  
  5.              **********************
  6.                  *****
  7.                  *****
  8.                  *****
  9.                  *****
  10.                  *****
  11.                  *****
  12.  
  13.  
  14. ENDCOMMENT @
  15.     .SALL
  16.     PAGE
  17.     SUBTTL    MACROS
  18. PRINT_CHAR    EQU    02H
  19. GETKEY_NOECHO    EQU    08H
  20. GETKEY        EQU    01H
  21. PRINT_MESSAGE    EQU    09H
  22. SEARCH_FIRST    EQU    11H
  23. SEARCH_NEXT    EQU    12H
  24. DELETE_FILE    EQU    13H
  25. SETDTA        EQU    1AH
  26. TAB        EQU    09H
  27. LF        EQU    0AH
  28. CR        EQU    0DH
  29. ESC        EQU    1BH
  30. GLOCATE     EQU    03H
  31. PLOCATE     EQU    02H
  32. GCHAR        EQU    08H
  33. MARK        EQU    '$'
  34. QUESTION    EQU    '?'
  35. ERR        EQU    0FFH
  36. ARG_FCB     EQU    05CH
  37. BIOS        MACRO    FCN_BIO, OPTIONAL_BIO_ARG
  38.         MOV    AH,FCN_BIO
  39.         IFNB    <OPTIONAL_BIO_ARG>
  40.         MOV    DX,OFFSET OPTIONAL_BIO_ARG
  41.         ENDIF
  42.         INT    10H
  43.         ENDM
  44. GET_CUR     MACRO
  45.         BIOS    GLOCATE
  46.         ENDM
  47. PUT_CUR     MACRO
  48.         BIOS    PLOCATE
  49.         ENDM
  50. GET_CHAR    MACRO
  51.         BIOS    GCHAR
  52.         ENDM
  53. DOS        MACRO    FCN_CODE, OPTIONAL_DX_ARG
  54.         MOV    AH,FCN_CODE
  55.         IFNB    <OPTIONAL_DX_ARG>
  56.         MOV    DX,OFFSET OPTIONAL_DX_ARG
  57.         ENDIF
  58.         INT    21H
  59.         ENDM
  60. SAY        MACRO    MSG_NAME
  61.         DOS    PRINT_MESSAGE MSG_NAME
  62.         ENDM
  63. SHOW        MACRO    ARG
  64.         MOV    DL,ARG
  65.         DOS    PRINT_CHAR
  66.         ENDM
  67. CLEAR        MACRO    REG
  68.         XOR    REG,REG
  69.         ENDM
  70. ONERR        MACRO    MESSAGE_ARG
  71.         LOCAL    OKAY
  72.         CMP    AL,ERR
  73.         JNZ    OKAY
  74.         SAY    MESSAGE_ARG
  75.         JMP    EXIT
  76. OKAY:
  77.         ENDM
  78.         PAGE
  79.         SUBTTL    PROGRAM CODE AND DATA
  80. CSEG        SEGMENT PARA    PUBLIC          'CODE'
  81.         ASSUME    CS:CSEG,DS:CSEG
  82.         ORG    100H
  83. START:        JMP    GO
  84. PROMPT        DB    ' (Y or N) '
  85.         DB    MARK
  86. NEW_LINE    DB    ' ',CR,LF,MARK
  87.         SUBTTL CODE SECTION
  88. MAIN        PROC    FAR
  89. GO:        PUSH    DS
  90.         CLEAR    BH
  91.         GET_CUR
  92.         SUB    DH,1
  93.         MOV    CX,80
  94.         MOV    DL,CL
  95. LOOK        LABEL    NEAR
  96.         SUB    DL,1
  97.         PUT_CUR
  98.         GET_CHAR
  99.         CMP    AL,63
  100.         JZ    FIND
  101.         LOOP    LOOK
  102.         ADD    DH,1
  103. FIND        LABEL    NEAR
  104.         ADD    DL,1
  105. PLACE        LABEL    NEAR
  106.         PUT_CUR
  107.         SAY    PROMPT
  108.         DOS    GETKEY
  109.         CMP    AL,'Y'
  110.         JZ    YES
  111.         CMP    AL,'y'
  112.         JZ    YES
  113.         CMP    AL,'N'
  114.         JZ    NO
  115.         CMP    AL,'n'
  116.         JZ    NO
  117.         JMP    PLACE
  118. YES        LABEL    NEAR
  119.         MOV    AL,1
  120.         JMP    DONE
  121. NO        LABEL    NEAR
  122.         MOV    AL,0
  123. DONE        LABEL    NEAR
  124.         PUSH    AX
  125.         SAY    NEW_LINE
  126.         POP    AX
  127.         MOV    AH,4CH
  128.         INT    21H
  129. MAIN        ENDP
  130. CSEG        ENDS
  131.         END    START
  132.